perm filename EDIT1.BNF[BNF,JRA] blob sn#005915 filedate 1972-10-23 generic text, type T, neo UTF8
00100	<ST> ::= <F1>;	=> *
00200	<F1> ::= [<FLIST>] 	=> (COND.FLIST)
00250	::= T  => T
00300		::= <F2>	=> *
00400	<FLIST> ::= <F1> '→   <F1A> ; <FLIST> =>((F1 F1A) . FLIST)
00500	::= <F1> '→ <F1A>	=>((F1 F1A))
00600	<F1A> ::= <F1>	=>*
00700	
00800	<F2> ::= <F3>	=>*
00900	::= <F2> ∨ <F3>	=> (OR F2 F3)
01000	
01100	<F3> ::= <F4> 	=>*
01200	::= <F3> ∧ <F4> 	=> (AND F3 F4)
01300	
01400	<F4> ::= (<F1>)	=> *
01500	::= ¬<F4>	=> (NOT F4)
01600	::= <FAL><F1>	=>(PROG (L)(SETQ L(DOMC))
01650	A(SETQ FAL(CAR L))
01700	(COND((NOT F1)(RETURN NIL)))
01800	(SETQ L(CDR L))
01900	(COND(L(GO A)))
02000	(RETURN T))
02100	
02200	::= <TEL><F1> 	=>(PROG(L)(SETQ L(DOMC))
02250	A(SETQ TEL(CAR L))
02300	(COND(F1(RETURN T)))
02400	(SETQ L(CDR L))
02500	(COND(L(GO A)))
02600	(RETURN NIL))
02602	::=<FAT><F1>	=> (PROG (%T)(SETQ %T(DOML))
02604	A(SETQ FAT(CAR %T))
02606	(COND((NOT F1)(RETURN NIL)))
02608	(SETQ %T(CDR %T))
02610	(COND (%T(GO A)))
02612	(RETURN T))
02614	
02616	::= <TET><F1>	=>(PROG (%T)(SETQ %T(DOML))
02618	A(SETQ TET(CAR %T))
02620	(COND (F1(RETURN T)))
02622	(SETQ %T(CDR %T))
02624	(COND(%T(GO A)))
02626	(RETURN NIL))
02628	
02700	 ::= <PREDIC>	=> PREDIC
02710	
02800	<FAL> ::= 	∀<VARL> 	=> VARL
02850	
02900	<TEL> ::= 	∃<VARL> => VARL
03000	
03050	<FAT> ::= ∀<VART> 	=> VART
03060	<TET> ::= ∃<VART>	=> VART
03100	<VARL> ::= L1	=> L1
03200	::= L2 =>L2  ::= L3 => L3 ::= L4 => L4
03300	<VART>::= T1 => T1 ::= T2 => T2 ::= T3 => T3 ::= T4 => T4
03400	<VARC> ::= C	=> C ::= C1 => C1 ::= C2 => C2 
03425	
03450	<PREDIC> ::= @<LISPR> => LISPR
03500	 ::= <TERM0><OPR><TERM>	=> (OPR TERM0 TERM)
03600	
03710	<TERM0> ::= <TERM>	=>*
03720	<LISPR> ::= <ATOM> =>ATOM
03730	  ::= (<LISPL>) =>LISPL
03740	
03750	<LISPL> ::= <LISPR> <LISPL> => (LISPR . LISPL)
03760	  ::=  =>NIL
03770	
03800	<OPR> ::=  =	=> EQ
03900		::= ≠		=> NEQ
04000		::= <		=> LESSP
04100		::= >		=> GREATERP
04200		::=	ε	=> MATCHER
04300	
04400	<TERM> ::= ∂(<VARL>)	=>(DEPTH(LIST VARL))
04500		::= ∂(<VART>)	=>(DEPTH1(LIST VART))
04600		::=∂(<VARC>)	=>(DEPTH(CDR VARC))
04650	  ::=β(<VARC>) => (TREEDEP VARC)
04700	::= <VARL> => VARL  ::= <VART> => VART ::= <VARC> => VARC
04900		::= TR(<VARC>)	=>(TREE VARC)
05000	
05100		::= α(<VARC>)	=>(LENGTH(CDR VARC))
05200		::= α(<VART>)	=>(NOSYM VART)
05300		::= α(<VARL>)	=>(NOSYM VARL)
05400	::= + => %PL ::= - => %NG 
05700		::= ⊂<MATCHLIST>⊃ =>(AND . MATCHLIST)
05800		::= ⊃<MATCHLIST>⊂ => (OR . MATCHLIST)
05850	::= <NUMBER> =>NUMBER
05900		::= <MATCH>	=> MATCH
06000	
06100	<MATCHLIST> ::= <MATCH> , <MATCHLIST> => (MATCH . MATCHLIST)
06150	
06200		::= <MATCH>	=>(MATCH)
06250	<MATCH> ::= <NOT1><PRED> => (%NG . PRED)
06300		::= <NOT1><PREDLET> =>(%NG PREDLET)
06325	::= <ID>[<VARLIST>] => (CL(ID . VARLIST))
06400	  ::= <PRED> =>PRED
06500	 ::= <PREDLET> => (PREDLET)
06525	 ::= <TM> => TM
06550	::= <FNLET> => ( FNLET)
06650	::=<ID> => (CL ID)
07400	::=<NUMBER> => (CL NUMBER)
07500	END